package org.example.entity;

import lombok.Data;
import org.dromara.easyes.annotation.IndexField;
import org.dromara.easyes.annotation.IndexId;
import org.dromara.easyes.annotation.IndexName;
import org.dromara.easyes.annotation.Score;
import org.dromara.easyes.annotation.rely.FieldType;
import org.dromara.easyes.annotation.rely.IdType;

import java.time.LocalDateTime;

/**
 * 故障实例 es 实体
 * @author ZH
 * @since: 2024/10/11
 */
@Data
@IndexName("fault_instance_index")
public class FaultInstanceEsEntity {

    /**
     * id 自定义 使用mysql的id
     */
    @IndexId(type = IdType.CUSTOMIZE)
    private Long id;
    /**
     * 填报id
     */
    private Long fillId;

    /**
     * 故障bom-id
     */
    private Long bomId;

    /**
     * 故障地点
     */
    private String faultLocation;

    /**
     * 故障类型
     */
    private String faultType;

    /**
     * 故障层级
     */
    private String faultLevel;

    /**
     * 任务大类
     */
    private String taskType;

    /**
     * 任务编码
     */
    private String taskCode;

    /**
     * 主机派工号
     */
    private String mainMachineWorkCode;

    /**
     * 产品名称
     */
    private String productName;

    /**
     * 图号/型号
     */
    private String modelCode;

    /**
     * 件号
     */
    private String partCode;

    /**
     * 批次号
     */
    private String batchCode;

    /**
     * 外委厂商
     */
    private String outsourceCompany;

    /**
     * 客户
     */
    private String custom;

    /**
     * 专业
     */
    private String major;

    /**
     * fj制造号
     */
    private String planeManufactureCode;

    /**
     * fj型别
     */
    private String planeType;

    /**
     * 系统
     */
    private String systemCode;

    /**
     * 总飞行小时
     */
    private Integer flyHourTotal;

    /**
     * 总工作小时
     */
    private Integer workHourTotal;

    /**
     * 总起落次数
     */
    private Integer takeOffAndLandTotal;

    /**
     * 总日历年
     */
    private Integer calendarYear;

    /**
     * 寿命
     */
    private Integer life;

    /**
     * 返修间隔期
     */
    private Integer repairInterval;

    /**
     * 主机维修类别
     */
    private String mainMachineRepairType;

    /**
     * 部附件维修类别
     */
    private String componentRepairType;

    /**
     * 故障模式
     */
    private String faultModel;

    /**
     * 故障判明方法
     */
    private String faultJudgmentMethod;

    /**
     * 故障发现工序
     */
    private String faultDiscoveryProcess;

    /**
     * 故障发生时机
     */
    private String faultHappenTime;

    /**
     * 故障日期
     */
    @IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime faultDate;

    /**
     * 故障处理单位
     */
    private String faultHandleDept;

    /**
     * 故障处理班组
     */
    private String faultHandleGroup;

    /**
     * 故障处理人
     */
    private String faultHandleUser;

    /**
     * 计划排除日期
     */
    @IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime planExcludeDate;

    /**
     * 故障排除日期
     */
    @IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime faultExcludeDate;

    /**
     * 故障原因
     */
    private String faultReason;

    /**
     * 故障排除方式
     */
    private String faultExcludeWay;

    /**
     * 对产品/零组件的影响
     */
    private String productOrComponentEffect;

    /**
     * 对系统的影响
     */
    private String systemEffect;

    /**
     * 故障现象描述
     */
    private String faultPhenomenonDescription;

    private double[] faultPhenomenonDescriptionVector;

    /**
     * 故障原因分析
     */
    private String faultReasonAnalyze;

    private double[] faultReasonAnalyzeVector;

    /**
     * 故障维修内容
     */
    private String faultRepairContent;

    private double[] faultRepairContentVector;

    /**
     * 故障改进措施
     */
    private String faultImproveStep;

    /**
     * 故障性质
     */
    private String faultNature;

    /**
     * 故障责任单位
     */
    private String faultResponsibilityDept;

    /**
     * 故障责任班组
     */
    private String faultResponsibilityGroup;

    /**
     * 故障责任人
     */
    private String faultResponsibilityUser;

    /**
     * 问题归零管理
     */
    private String problemZeroed;

    /**
     * 质量考核情况
     */
    private String qualityAssessment;

    /**
     * 上级故障编号
     */
    private String parentFaultCode;

    /**
     * 故障录入来源
     */
    private String inputSource;

    /**
     * 附件地址
     */
    private String fileUrl;

    /**
     * 创建时间
     */
    @IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    /**
     * 最后更新时间
     */
    @IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    /**
     * 创建者
     */
    private String creator;
    /**
     * 更新者
     */
    private String updater;

    @Score(decimalPlaces = 2)
    private Float score;
}
